Network devices, such as routers, may be configured to distribute outgoing traffic, which may be originated from an application within a local area network or from a network device, across bonded communication links associated with multiple egress interfaces, logic connections, network tunnels, virtual private networks and etc. There are a few bonded communication links implementations, such as bonding, and PPP Multilink Protocol. Network traffic can be usually carried by packets through wired or wireless and public or private networks through bonded communication links. In order to allow a destination network device (DND) to determine the sequence of the packets, it is a common practice to assign a sequence number to each packet.
Each packet, when arriving at a DND, may experience different delay as each of the bonded communication links may have different latency and different amount of bandwidth available. Therefore packets may arrive at the DND in a bursty fashion and out-of-sequence. Also, some of the packets may never arrive at the DND because they are lost.
It is common that a DND may store the packets in a queue, which is implemented in a memory, temporarily in order to reduce the possibility that the packets delivered are not in sequence. However, current state-of-art implementations of delivering packets received in a bonded communication links network results in large time-variance and out-of-sequence packet delivery even with implementation of a queue. Further, the storage of the queue needs to be allocated for storing the packets. If the storage size is too large, some of computer resources may be wasted. If the storage size is too small, packets may be discarded too early.